if not HST then return end

local L = HST.L

HST.SpellCastTime = {
    AUTO_SHOT = 0.5,
	STEADY_SHOT = 1.0,
	MULTI_SHOT = 0.5,
	AIMED_SHOT = 3,
}

HST.ShotSpells = {
	[L["Aimed Shot"]] = true,
	[L["Multi-Shot"]] = true,
	[L["Trueshot"]] = true,
	[L["Arcane Shot"]] = true,
	[L["Concussive Shot"]] = true,
	[L["Distracting Shot"]] = true,
	[L["Scatter Shot"]] = true,
	[L["Scorpid Sting"]] = true,
	[L["Serpent Sting"]] = true,
	[L["Viper Sting"]] = true,
	[L["Tranquilizing Shot"]] = true,
}

function HST:GetAutoShotCastTime()
    return HST.SpellCastTime.AUTO_SHOT
end

function HST:GetSteadyShotCastTime()
    local haste = self:GetRangedHaste()
    local weighted = HST.SpellCastTime.STEADY_SHOT / (1 + haste)
    weighted = self:Regulate(weighted, 0.001)
    return weighted + HST.SpellCastTime.AUTO_SHOT
end

function HST:GetMultiShotCastTime()
    return HST.SpellCastTime.MULTI_SHOT
end

function HST:GetAimedShotCastTime()
    local weighted = HST.SpellCastTime.AIMED_SHOT / (1 + haste)
    return self:Regulate(weighted, 0.001)
end

function HST:GetCastTimeByHaste(CastTime)
    local haste = self:GetRangedHaste()
    local weighted = CastTime / (1 + haste)
    return self:Regulate(weighted, 0.001)
end